/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.saber.certificacao.ejbs.stateless.interfaces;

import br.com.saber.certificacao.enums.Papeis;
import br.com.saber.certificacao.modelos.Roles;
import br.com.saber.certificacao.modelos.Usuario;
import java.util.Set;
import javax.ejb.Local;

/**
 *
 * @author gbvbahia
 */
@Local
public interface RolesBeanLocal {

    /**
     * Passe um Set de Roles e este método retornará a maior role do grupo,
     * baseado na propriedade Level da Enum
     * br.com.saber.certificacao.enums.Papeis
     * @param roles
     * @return A maior
     */
    public Papeis getMaxRole(Set<Roles> roles);

    /**
     * Retorna todas as Rolas cadastradas
     * @return Set de roles cadastradas.
     */
    public Set<Roles> getAllRoles();

    /**
     * Retorna a Role que possui o ID informado.
     * @param id
     * @return Role que possui o ID informado ou nulo se não encontrar
     */
    Roles getRoleByID(Long id);

    /**
     * Retorna as roles que o usuário passado tem acesso a liberar
     * no cadastro de outro usuário
     * @param usuario
     * @return
     */
    Set<Roles> getRolesParaLiberar(Usuario usuario);

    Roles buscarRolePorPapel(Papeis papel);
}
